# -*- coding:utf-8 -*-

#输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。
import itertools

def Permutation(ss):   #self只有在类的方法中才会有，独立的函数或方法是不必带有self的
#在描述符类中，self指的是描述符类的实例
    # write code here
    if not ss:
        return []
    return sorted(set(map(''.join, itertools.permutations(ss))))
print Permutation('abc') #test

#permutations('abc', 2)   # 从'abcd'中挑选两个元素，比如ab, bc, ... 将所有结果排序，返回为新的循环器。
#第二个参数缺省是全部

#set和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元

# t = set("Hello")
# print t
# set(['H', 'e', 'l', 'o'])

#map实现了类似并行运算，并且结果存为几个string，用set去重（aa） 且不会分解为单个字符

